package com.luobr.backend.model.dto.image;

import cn.hutool.core.util.NumberUtil;
import com.luobr.backend.model.entity.Image;
import lombok.Data;
import org.springframework.beans.BeanUtils;

/**
 * @author: 罗念笙
 * @date: 2025/2/25 15:42
 * 用于接受图片解析信息的包装类
 */
@Data
public class ImageParseResult {
  
    // 图片地址
    private String url;  
  
    // 图片名称
    private String name;
  
    // 文件体积
    private Long imgSize;
  
    // 图片宽度
    private Integer imgWidth;
  
    // 图片高度
    private Integer imgHeight;
  
    // 图片宽高比
    private Double imgScale;
  
    // 图片格式
    private String imgFormat;

    // 图片主色调
    private String imgColor;

    /**
     * 封装类转对象
     * @param imageInfoResult 原始图片信息
     * @return 转换后的图片信息
     */
    public static ImageParseResult imageInfoToParseVo(ImageInfoResult imageInfoResult) {
        if (imageInfoResult == null) {
            return null;
        }
        // 赋值
        ImageParseResult imageParseResult = new ImageParseResult();
        BeanUtils.copyProperties(imageInfoResult, imageParseResult);
        // 计算图片宽高比
        int imgWidth = imageInfoResult.getImgWidth();
        int imgHeight = imageInfoResult.getImgHeight();
        double imgScale = NumberUtil.round(imgWidth * 1.0 / imgHeight, 2).doubleValue();
        imageParseResult.setImgScale(imgScale);
        return imageParseResult;
    }

    /**
     * 封装类转对象
     * @param imageParseResult 图片解析信息
     * @return 保存到数据库信息
     */
    public static Image parseVoToObj(ImageParseResult imageParseResult) {
        if (imageParseResult == null) {
            return null;
        }
        // 赋值
        Image image = new Image();
        BeanUtils.copyProperties(imageParseResult, image);
        return image;
    }
}